@extends('layouts.header')
@section('style')
    tbody tr:hover {
        cursor: pointer;
        /* background-color: #dee; */
    }
@endsection
@section('content')
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 检测业务 <span
        class="c-gray en">&gt;</span> <a href="javascript:;" onclick="location.href='/{{config('constant.name_admin')}}/contract/indexAssignTask';">任务分配</a><span
        class="c-gray en">&gt;</span> 点击进入【{{ $contractInfo->client_name }}】
    <a class="btn btn-primary radius r" style="line-height:1.6em;margin-top:3px"
       href="javascript:location.replace(location.href);"
       title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
    <a class="btn btn-primary radius r mr-10" style="line-height:1.6em;margin-top:3px"
       href="javascript:self.location=document.referrer;">
        <i class="Hui-iconfont Hui-iconfont-arrow1-left"></i>&nbsp;&nbsp;返回
    </a>
</nav>
<div class="page-container">
    <div class="panel panel-default">
        <div class="panel-header">主检人</div>
        <div class="panel-body">
            @foreach ($data_tester as $val)
                <label for="zjr-{{ $val->id }}"><input class="ml-5" type="radio" name="zjr" id="zjr-{{ $val->id }}" value="{{ $val->id }}" @if($val->realname == auth()->user()->realname) checked @endif> {{ $val->realname }}</label>
            @endforeach
        </div>
    </div>
    <div class="panel panel-default">
        <div class="panel-header">副检人（默认：个人信息绑定）</div>
        <div class="panel-body">
            <!-- 注意：副检人中不能没有当前账号人，如果选别的人做主检，当前账号可能是副检人 -->
            <label for="fjr"><input type="checkbox" name="fjr" id="fjr" value="" checked> {{auth()->user()->partner}}</label>
            @foreach ($data_tester as $val)
                @if($val->realname != auth()->user()->partner)
                <label for="fjr-{{ $val->id }}"><input class="ml-5" type="checkbox" name="fjr" id="fjr-{{ $val->id }}" value="{{ $val->realname }}"> {{ $val->realname }}</label>
                @endif
            @endforeach
        </div>
    </div>

    <div class="panel panel-default mt-10">
        <div class="panel-header">
            检测项目
            <a class="btn btn-primary size-MINI radius disabled ml-20" style="width: 47px" id="item_checkAll"
               href="javascript:;" onclick="item_checkAll()"> 全选 </a>
        </div>
        <div class="panel-body">
            <div class="skin-minimal">
                <div id="test_items" class="skin-minimal">
                </div>
            </div>
        </div>
    </div>
    <div class="cl pd-5 bg-1 bk-gray mt-10">
            <span class="l">
                <a id="btn_assign" class="btn btn-primary radius disabled" data-id="0" href="javascript:;"
                   onclick="one_assign(this)">点击分配</a>
            </span>
        <span class="l ml-15">
                <a class="btn btn-primary radius" href="javascript:;" onclick="batch_assign()">批量分配</a>
            </span>
        <span class="l ml-15">
                <a class="btn btn-primary radius" href="javascript:;" onclick="autoAssign()">一键自动分配</a>
            </span>
    </div>
    <div class="mt-10">
        <table class="table table-border table-bordered table-hover table-bg table-responsive" id="datatable">
            <thead>
            <tr class="text-c">
                <th><input type="checkbox" id="checkAll"></th>
                <th>条形码</th>
                <th>样品名称</th>
                <th>分类</th>
                <th>额定电压</th>
                <th>执行标准</th>
                <th width='20%' class="text-c">试验项目</th>
                <th>数量</th>
                <th>主检人</th>
                <th>分配结果</th>
            </tr>
            </thead>
        </table>
    </div>
</div>

<script type="text/javascript">
    var table;
    $(function () {

        $.fn.dataTable.ext.errMode = 'throw';//datatable抛异常的方式，在console中输出，默认以alert的方式弹出
        table = $('#datatable').DataTable({
            // order: [[6, 'desc']],//默认第几个排序
            ordering: false, // 是否排序
            // "pageLength": 2,
            // "stateSave": true,// 状态保存 - 再次加载页面时还原表格状态
            // "stateDuration": -1,//仅保留当前会话的数据
            //"paging":false, //禁用分页
            // serverSide: true,//服务器端处理模式——此模式下如：过滤、分页、排序的处理都放在服务器端进行。
            // responsive: true,//响应式，需要插件
            // fixedHeader: true,//表头固定，需要插件
            // autoWidth: false,
            "deferRender": true,//延迟渲染速度
            ajax: "/{{config('constant.name_admin')}}/contractGaiyao/indexAssignTask?id={{ $_GET['id'] }}",//客户端分页时，必须写url
            processing: true,//加载数据时候是否显示进度条
            language: {url: '/admin/lib/datatables/dataTables_Chinese_Lang.json'},
            /* createdRow : function( row, data, dataIndex ) {
                //当tr元素被创建（所有的td元素已经插入进去），或者给tr绑定事件，该回调函数被执行
                $(row).addClass( 'text-c' );
            },
            initComplete : function (settings, json) {
                //当表格完成加载绘制完成后执行此方法
                // $(row).addClass( 'text-c' );
                // alert(111);
            }, */
            columns: [
                {
                    data: null, class: "text-c", render: function (data, type, row, meta) {
                        return '<input type="checkbox" value="'+row.id+'" />';
                    }, searchable: false, orderable: false
                },
                {data: "bar_codes", class: "text-c", searchable: false, orderable: false},//条形码 1
                {
                    data: "tool_name",
                    class: "text-c tool_name",
                    orderable: false,
                    render: function (data, type, row, meta) {
                        return '<span data-id="' + row.id + '">' + row.tool_name + '</span>';
                    }
                },//样品名称 2
                {data: "class", class: "text-c"},//分类 3
                {data: "voltage", class: "text-c", orderable: false},//电压等级 4
                {data: "std_num", class: "text-c"},//执行标准 5
                {data: "item_names", class: "text-l"},//试验项目 6
                {
                    data: "count", class: "text-c count", render: function (data, type, row, meta) {
                        return data + ' ' + row.unit;
                    }
                },//数量 7
                {data: "managers", class: "text-c managers"},//主检人
                {
                    data: "id", class: "text-c", orderable: false, render: function (data, type, row, meta) {
                        return '<a class="ml-5 btn btn-primary radius size-MINI" href="javascript:;" onclick="view(' + row.id + ')">查看</a>';
                    }
                },//操作 - 分配结果
            ],
        });

        /*  draw  在表格完成绘制后触发*/
        table.on('draw', function () {
            let total=0
            $("tr",'tbody').each(function () {
                let count = parseInt($(this).find('td.count').text());
                if(count > 0){
                    total += count;
                }
            })
            $('#total').text(total);
            var info = table.page.info();
            //如果最后一页仅剩一条记录，而且不是在第一页
            if ((info.start == info.end) && info.end > 1) {
                //跳转到上一页
                $('#datatable_previous').click();
            }

            $('#btn_assign').attr('data-id', '0');
            $('#btn_assign').addClass('disabled');
            $('#item_checkAll').addClass("disabled");
            $('#test_items').html('');
            $("tbody tr").css("background-color", "#fff");

            $("tbody tr").click(function () {
                $("tbody tr").css("background-color", "#fff");
                $(this).css("background-color", "#dee");
                var id = $(this).find("td.tool_name span").attr('data-id');
                $('#btn_assign').attr('data-id', id);
                $('#btn_assign').removeClass('disabled');
                $('#test_items').html('');
                //发送ajax 请求，获取当前行的检测项目
                $.get('/{{config('constant.name_admin')}}/myapi/getItemByContractGaiyaoId', {id: id}, function (data) {
                    $('#item_checkAll').text('全选');
                    $('#item_checkAll').removeClass("disabled");

                    //jQuery的循环操作
                    var str = '';
                    $.each(data, function (index, el) {
                        str += "<label class='ml-10'><input type='checkbox' name='items[]' value='" + el.id + "'>" + el.name + "</label>";
                    });
                    //将数据放到对应的option之后
                    $('#test_items').html(str);
                }, 'json');
            });
        });
    });

    /*表格重新加载*/
    function table_reload(bool) {
        if (bool) {
            //true时，跳到第一页
            table.ajax.reload();
        } else {
            //false时，停留在原来页
            table.ajax.reload(null, false);
        }
    }

    /*单个任务分配*/
    function one_assign(obj) {
        var tester_id = $('input[name=zjr]:checked').val(),
        fj_testers = [];
        if (typeof (tester_id) == "undefined") {
            layer.msg('请选中一个主检人', {time: 2000});
            return;
        }
        $('input[name=fjr]:checked').each(function(i){
            fj_testers.push($(this).val());
        });

        var doms = $("#test_items input:checked");
        var l = doms.length;
        if (l == 0) {
            layer.msg('未勾选检验项目', {time: 2000});
            return;
        }
        var checkID = [];//定义一个空数组
        doms.each(function (i) {//把所有被选中的复选框的值存入数组
            checkID[i] = $(this).val();
        });

        var index2;

        $.ajax({
            type: 'post',
            url: '/{{config('constant.name_admin')}}/contractGaiyao/oneAssign',
            data: {
                checkID: checkID,//勾选的检测项目id
                id: $(obj).attr('data-id'),
                batch_id:{{ $batch_id }},
                tester_id: tester_id,
                fj_testers: fj_testers,
                _token: '{{ csrf_token() }}',
            },
            // dataType: 'json',
            success: function (data) {
                // console.log(data);
                if (data === '1') {
                    table_reload(0);//0停留在当前页，1回到第一页
                    layer.msg('分配成功!', {icon: 1, time: 2000});
                } else {
                    layer.msg('分配失败！'+data, {icon: 2, time: 2000});
                }
            },
            error: function (data) {
                ajax_error(data);
            },
            beforeSend: function () {
                //0.4透明度 白色遮罩
                index2 = layer.load(2, {shade: [0.05, '#000']});
            },
            complete: function () {
                layer.close(index2);
            },
        });
    }

    /*批量任务分配*/
    function batch_assign() {
        var tester_id = $('input:radio:checked').val(),
            fj_testers = [];
        if (typeof (tester_id) == "undefined") {
            layer.msg('请选中一个主检人', {time: 2000});
            return;
        }
        $('input[name=fjr]:checked').each(function(i){
            fj_testers.push($(this).val());
        });

        var doms = $("tbody tr > td:first-child input:checkbox:checked");
        var l = doms.length;
        if (l == 0) {
            layer.msg('请勾选任务', {time: 2000});
            return;
        }

        var checkID = [],managers = '';//定义一个空数组
        doms.each(function (i) {//把所有被选中的复选框的值存入数组
            checkID[i] = $(this).val();
            managers += $(this).parents('td').siblings('.managers').text();
        });
        if($.trim(managers) !== ''){
            layer.confirm('所选样品有已经分配过的，是否重新分配？', function(index) {
                assign();
            });
        }else{
            assign();
        }
        function assign() {
            var index2;
            $.ajax({
                type: 'post',
                url: '/{{config('constant.name_admin')}}/contractGaiyao/batchAssign',
                data: {
                    checkID: checkID,
                    batch_id:{{ $batch_id }},
                    tester_id: tester_id,
                    fj_testers: fj_testers,
                    _token: '{{ csrf_token() }}',
                },
                // dataType: 'json',
                success: function (data) {
                    // console.log(data);
                    if (data === '1') {
                        table_reload(0);//0停留在当前页，1回到第一页
                        layer.msg('分配成功!', {icon: 1, time: 2000});
                    } else {
                        layer.msg('分配失败!', {icon: 2, time: 2000});
                    }
                },
                error: function (data) {
                    ajax_error(data);
                },
                beforeSend: function () {
                    //0.4透明度 白色遮罩
                    index2 = layer.load(2, {shade: [0.05, '#000']});
                },
                complete: function () {
                    layer.close(index2);
                },
            });
        }
    }

    /*查看 分配结果*/
    function view(id, w, h) {

        layer_show('分配结果', '/{{config('constant.name_admin')}}/myapi/viewAssignRes?id=' + id, w, h);
    }

    /* 一键自动分配任务 */
    function autoAssign() {
        var index2;

        layer.confirm('确认要 一键自动分配任务 吗？', {title: '信息', icon: 3}, function (index) {
            $.ajax({
                type: 'GET',
                url: '/{{config('constant.name_admin')}}/contractGaiyao/autoAssign' + '?contract_id=' + {{ $batch_id }},
                // dataType: 'json',
                success: function (data) {
                    // console.log(data);
                    if (data === '成功') {
                        table_reload(0);//0停留在当前页，1回到第一页
                        layer.msg('一键自动分配任务成功!', {icon: 1, time: 2000});
                    } else {
                        // layer.msg(data,{icon:2,time:2000});
                        table_reload(0);//0停留在当前页，1回到第一页
                        layer.open({
                            content: data,
                            title: false,
                            type: 0,
                            icon: 5,
                            // skin: 'layui-layer-molv',
                            btn: '',
                            closeBtn: 2, //右上角关闭按钮风格  0无,1默认,2
                            shadeClose: true, //开启遮罩关闭
                            time: 0,
                            anim: 6,//弹出动画
                        });
                    }
                },
                error: function (data) {
                    ajax_error(data);
                },
                beforeSend: function () {
                    //0.4透明度 白色遮罩
                    index2 = layer.load(2, {shade: [0.05, '#000']});
                },
                complete: function () {
                    layer.close(index2);
                },
            });
        });
    }

    /*iCheck 全选*/
    function item_checkAll() {
        // var checkAll = $("table thead th input:checkbox");
        var checkboxes = $("#test_items input:checkbox");
        if ($('#item_checkAll').text() === '全不选') {
            checkboxes.iCheck('uncheck');
            $('#item_checkAll').text('全选');
        } else {
            checkboxes.iCheck('check');
            $('#item_checkAll').text('全不选');
        }
    }

</script>
@endsection